1. Field of the Invention
The present invention relates to computer system memory, and more particularly to features for expediting the memory initialization process upon booting of a computer system.
2. Description of the Related Art
Power-on self-test (POST) is the common term for a computer system's pre-boot sequence. It is the first step of the more general process called booting. On power up, the main duties of POST are handled by the BIOS (Basic Input/Output System), which may hand some of these duties to other programs designed to initialize very specific peripheral devices, such as video initialization. These other duty-specific programs are generally known collectively as option ROMs, or in the case of video initialization, the video BIOS.
The primary function of the BIOS is to identify and initiate component hardware, such as hard drives. This is to prepare the machine so software programs can load, execute, and assume control of the PC. This process is known as booting. The BIOS runs from a Read Only Memory (ROM) device, such as flash memory, when the computer is powered on. It initializes several motherboard components and peripherals, including the chipset, the system memory, the primary graphics controller and the video buffer. A first portion of the BIOS code, entitled Phase 1 BIOS code, is executed from its location on the ROM device, wherein the processor is directed to the reset vector on the ROM device and all reads and writes operate on the ROM device. A reset vector refers to the default location a central processing unit will go to find the first instruction it will execute after a reset. The reset vector is a pointer or address indicating where the CPU will begin as soon as it is able to execute instructions.
Once a required amount of system memory (often 1 Megabyte of memory) is initialized, the BIOS typically copies and decompresses itself into that memory and continues executing from it. The BIOS code that executes after this copying step is referred to as Phase 2 BIOS code, wherein the processor is directed to the computer's RAM and all reads and writes operate on the RAM. Only after all of the system memory has been initialized, does the BIOS load the boot loader for the operating system and transfer control to it.
Checking system memory during POST involves a series of steps including, among other things, writing patterns to the memory, reading the patters to ensure data integrity, checking for errors, and then zeroing the memory. For small amounts of memory, these steps can be executed rather quickly. For large amounts of memory, however, these steps can take longer amounts of time, such as one second per gigabyte (GB). High end servers can have large amounts of memory available. In some cases, a server can have four memory cards with up to 8 Dual Inline Memory Modules (DIMMs) of 8 GB each, resulting in a total of up to 256 GB of RAM. Thus, at a rate of one GB per second, 256 GB of memory can take over 4 minutes to initialize, during which time many items, such as the video buffer, are not initiated. This results in a substantial period of time when the computer system's display is not showing any video or images, which can be disconcerting or confusing to a user of the computer.
One approach to this problem involves working with the vendor of the video processing chip to obtain a video BIOS that can run in a stack-less environment so as to initialize the video buffer during execution of the POST. The drawbacks to this approach include problems obtaining the proper cooperation from the vendor, as well as obtaining updated video BIOS for each future revision of the video processing chip. Another approach to this problem involves reverse engineering the video buffer initialization instructions and hard-coding the same instructions into the POST. This approach, however, is specific to a particular video processing chip, reducing is portability to other video processing chips. Further, this approach usurps a majority of Phase 1 BIOS code, which is limited in size.
Therefore, there is a need for improvements over the prior art, and more particularly, there is a need for a more efficient way of preparing memory during booting of a computer system so as to allow for quicker display of video.